// tge.rs
// copyright zipxing@hotmail.com 2022~2023

//! tge提供audio, event, game, log, render, algorithm, util
//! 模块以便开发游戏
//! base feature，只编译algorithm, event, util模块，依赖更少，适用于
//! ffi或者wasm等模式

/// 每秒游戏帧数,为节省cpu不设置太高
pub const GAME_FRAME: u32 = 36;
pub const LOGO_FRAME: u32 = GAME_FRAME / 4 * 5;

/// 并查集, astar等算法
pub mod algorithm;

/// 处理输入事件，定时器事件和自定义事件
pub mod event;

/// 一些常用工具，对象池，随机数，
/// 矩形，圆形，点等几何图形
/// 以及一些自定义格式素材文件解析读写
pub mod util;

/// 调用rodio模块播放音频
#[cfg(not(feature = "base"))]
pub mod audio;

/// 公共变量，包括绘制适配器
#[cfg(not(feature = "base"))]
pub mod context;

/// 整合model和render，包装游戏loop
#[cfg(not(feature = "base"))]
pub mod game;

/// 日志处理
#[cfg(not(feature = "base"))]
pub mod log;

/// 渲染相关的模块，支持文本和SDL图形两种渲染模式:
/// adapter:渲染适配接口
/// cell:表示一个基本绘图单位“字符”，
/// buffer:由Cell构成的Vector，管理屏幕绘制缓冲
/// sprite:基本的绘制组件,对buffer进一步封装
/// style:定义前景色背景色等绘制属性
/// terminal:绘制终端，适配文本模式或者sdl图形模式
/// 在文本模式下cell是一个unicode字符，
/// 在SDL图形模式下，cell是一个固定大小的点阵图片，可以是pestii字符或者其他自定义图案
/// 在SDL图形模式下，还支持一种可以按照像素设置的特殊sprite，增强表现力
#[cfg(not(feature = "base"))]
pub mod render;

